// SISTEMA : Sistema de Identificacao Criminal
// PROGRAMA : SCRP001
// O QUE FAZ � Relatorio da Ficha Indice Criminal
// Data : 29 de Julho de 1997
package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.io.FileNotFoundException;
import java.text.ParseException;
import java.util.Arrays;

import net.sf.jasperreports.engine.JRException;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.controller.relatorios.Scrr1100Report;
import br.com.vti.sisp_sicrim.antigo.controller.tela.Scrp1610A;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.model.SicSenha;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Scrg001;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Scrp1610 O QUE FAZ � Relatorio da Ficha Indice Criminal *
 * 
 * @author Incode - Data: mai/2014
 * 
 */
@Resource
@Path("/antigo/scrp1610")
public class Scrp1610 {
	// Views utilizadas
	SicCadastro criminalView = new SicCadastro();
	SicSenha senhaView = new SicSenha();
	// Telas/relatorios utilizados
	Scrp1610A scrp1610A;
	Scrr1100Report report;
	// Includes utilizados
	// Areas globais / session
	Scrg001 scrg001;
	// Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();

	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;
	Scrp1610 scrp1610Anterior;
	String faseproc = "0";

	// private int jDataIni = 0;
	// private int jDataFim = 0;
	private long jReg_geral = 0;
	private String jNomeCompleto = "";
	private String jMae = "";
	private int jData_nasc = 0;
	private String[][] dedos = new String[6][3];
	private String jDelegacia = "";
	private String jDescMunicipio = "";
	private String jDescInstrucao = "";
	private int jMunicipio = 0;
	private String jUfRegGeral = "";
	private int jDataRegistro = 0;
	private long jNoAutos = 0;
	private int jDataAtuacao = 0;
	private long jIdentidade = 0;
	private String jPai = "";
	private String jAlcunha = "";
	private String jNomeAnterior = "";
	private int jSexo = 0;
	private int jCodMunNascimento = 0;
	private String jUfNascimento = "";
	private String jDocApresentado = "";
	private long jNumDocApresentado = 0;
	private String jOrgaoExpUf = "";
	private String jProfissao = "";
	private int jInstrucao = 0;
	private String jNaturalidade = "";
	private String jAvRua = "";
	private int jNumero = 0;
	private String jBairro = "";
	private int jMunEndereco = 0;
	private String jUfEndereco = "";
	private int jCep = 0;
	private String jComplemento = "";
	private String jStatus = "";
	private String jDescreg = "";
	private int jAltura = 0;
	private String jDescAltura = "";
	private int jEstadoCivil = 0;
	private String jDescCivil = "";
	private int jCutis = 0;
	private String jDescCutis = "";
	private int jCorCabelo = 0;
	private String jDescCor = "";
	private int jTipoCabelo = 0;
	private String jDescTipocabelo = "";
	private int jCorOlhos = 0;
	private String jDescOlho = "";
	private String jSinais = "";
	private int jCompleicao = 0;
	private String jDescCompleicao = "";
	private String jNomeVitima = "";
	private String jMotivo = "";
	private int jOcorrencia = 0;
	private String[] jObservacoes = new String[5];
	private int jMatricula = 0;
	private String jNomeDigitador = "";
	private int jDataDig = 0;
	private int jHorario = 0;

	private Scrp1610A preMapas() throws JRException, ParseException {
		scrp1610A = new Scrp1610A(true, sessao);
		Arrays.fill(dedos, "");
		Arrays.fill(jObservacoes, "");
		// RELATORIO 1 PS=60 LS=80
		report = new Scrr1100Report();
		report.setPageSize(60);
		report.setLineSize(80);
		// RELATORIO

		return scrp1610A;
	}

	public Scrp1610(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar(Scrp1610A scrp1610A) {
		try {
			main(scrp1610A);
		} catch (Exception e) {
			throw new ExceptionProgram(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main(Scrp1610A pscrp1610A) throws ParseException, JRException, FileNotFoundException {
		if (pscrp1610A == null) {
			primeiraVez = true;
			// scrp1610A = new Scrp1610A (primeiraVez);
			scrp1610A = preMapas();
			scrp1610A.setNavegar("../scrp1610/executar");
			result.include("scrp1610A", scrp1610A);
			sessao.setAtributo("SCRP1610", this);
			scrp1610A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
			return;
		} else {
			restaurarEstados(pscrp1610A);
		}

		scrp1610A.receberTela(false, result);
		// Par�grafo: fd33()
		while (criminalView.pesquisaNomeCompletoDiferDataDocAtuFaixaStatusRegDifer(" ", scrp1610A.getJdataini(), scrp1610A.getJdatafim(), 5)) {
			jReg_geral = criminalView.getRegEstadualGeral();
			dedos[1][1] = criminalView.getPolegarDireito();
			dedos[2][1] = criminalView.getIndicadorDireito();
			dedos[3][1] = criminalView.getMedioDireito();
			dedos[4][1] = criminalView.getAnularDireito();
			dedos[5][1] = criminalView.getMinimoDireito();
			dedos[1][2] = criminalView.getPolegarEsquerdo();
			dedos[2][2] = criminalView.getIndicadorEsquerdo();
			dedos[3][2] = criminalView.getMedioEsquerdo();
			dedos[4][2] = criminalView.getAnularEsquerdo();
			dedos[5][2] = criminalView.getMinimoEsquerdo();
			jNomeCompleto = criminalView.getNomeCompleto();
			jMae = criminalView.getNomeMae();
			jData_nasc = criminalView.getDataNasc();
			jIdentidade = criminalView.getRegFederalCi();
			jUfRegGeral = criminalView.getUfRegEstadualGeral();
			jPai = criminalView.getNomePai();
			jDelegacia = criminalView.getNomeDelegacia();
			jDescMunicipio = criminalView.getMunicipioRegGeral();
			jMunicipio = criminalView.getCodigoMunicipioRegGeral();
			jNomeAnterior = criminalView.getNomeAnterior();
			jAlcunha = criminalView.getApelidoAlcunhas(1);
			jSexo = criminalView.getSexo();
			jNaturalidade = criminalView.getNaturalidade();
			jCodMunNascimento = criminalView.getCodigoMunicipioNasc();
			jUfNascimento = criminalView.getUfNaturalidade();
			jDocApresentado = criminalView.getDocumentoApresent();
			jNumDocApresentado = criminalView.getNumDocumentoApresent();
			jOrgaoExpUf = criminalView.getOrgaoExpUfUfUf();
			jStatus = String.valueOf(criminalView.getStatusReg());
			jProfissao = criminalView.getProfissao();
			jInstrucao = criminalView.getGrauInstrucao();
			jAvRua = criminalView.getAvRua();
			jNumero = criminalView.getNumero();
			jBairro = criminalView.getBairro();
			jMunEndereco = criminalView.getMunicipio();
			jUfEndereco = criminalView.getEstado();
			jCep = criminalView.getCep();
			jComplemento = criminalView.getComplemento();
			jDataRegistro = criminalView.getDataReg();
			jDataAtuacao = criminalView.getDataAtuacao();
			jAltura = criminalView.getAltura();
			jEstadoCivil = criminalView.getEstadoCivil();
			jCutis = criminalView.getCodigoCutis();
			jCorCabelo = criminalView.getCodigoCorCabelo();
			jTipoCabelo = criminalView.getCodigoTipoCabelo();
			jCorOlhos = criminalView.getCodigoCorOlhos();
			jSinais = criminalView.getMarcaPartCicatTatuag();
			jCompleicao = criminalView.getCompleicao();
			jNomeVitima = criminalView.getNomeVitima();
			jMotivo = criminalView.getMotivoPrisaoLei();
			jOcorrencia = 1;
			jObservacoes = criminalView.getObservacao();
			jDataDig = criminalView.getDataDocAtu();
			jMatricula = criminalView.getMatriculaFuncAtu();
			jHorario = criminalView.getHoraAtu();
			// Par�grafo: fd2()
			senhaView.consultaMatricula(jMatricula);

			jNomeDigitador = senhaView.getNome();

			switch (jStatus) {
			case "1": {
				jDescreg = "Registro Normal";
				break;
			}
			case "2": {
				jDescreg = "Registro Cancelado";
				break;
			}
			case "3": {
				jDescreg = "Registro com Mandato de Prisao preventiva";
				break;
			}
			case "4": {
				jDescreg = "Condenado";
				break;
			}
			default: {
				continue;
			}
			}
			report.setDedos(dedos);
			report.setJalcunha(1, jAlcunha);
			report.setJaltura(jAltura);
			report.setJavrua(jAvRua);
			report.setJbairro(jBairro);
			report.setJcep(jCep);
			report.setJcodmunnascimento(jCodMunNascimento);
			report.setJcompleicao(jCompleicao);
			report.setJcomplemento(jComplemento);
			report.setJcorcabelo(jCorCabelo);
			report.setJcorolhos(jCorOlhos);
			report.setJcutis(jCutis);
			report.setAnas((int) UtilBean.extraiDigitos(jData_nasc, 8, 1, 4));
			report.setMnas((int) UtilBean.extraiDigitos(jData_nasc, 8, 5, 2));
			report.setDnas((int) UtilBean.extraiDigitos(jData_nasc, 8, 7, 2));
			report.setJanoatuacao((int) UtilBean.extraiDigitos(jDataAtuacao, 8, 1, 4));
			report.setJmesatuacao((int) UtilBean.extraiDigitos(jDataAtuacao, 8, 5, 2));
			report.setJdiaatuacao((int) UtilBean.extraiDigitos(jDataAtuacao, 8, 7, 2));
			report.setJanodig((int) UtilBean.extraiDigitos(jDataDig, 8, 1, 4));
			report.setJmesdig((int) UtilBean.extraiDigitos(jDataDig, 8, 5, 2));
			report.setJdiadig((int) UtilBean.extraiDigitos(jDataDig, 8, 7, 2));
			report.setJanofim((int) UtilBean.extraiDigitos(scrp1610A.getJdatafim(), 8, 1, 4));
			report.setJmesfim((int) UtilBean.extraiDigitos(scrp1610A.getJdatafim(), 8, 5, 2));
			report.setJdiafim((int) UtilBean.extraiDigitos(scrp1610A.getJdatafim(), 8, 7, 2));
			report.setJanoini((int) UtilBean.extraiDigitos(scrp1610A.getJdataini(), 8, 1, 4));
			report.setJmesini((int) UtilBean.extraiDigitos(scrp1610A.getJdataini(), 8, 5, 2));
			report.setJdiaini((int) UtilBean.extraiDigitos(scrp1610A.getJdataini(), 8, 7, 2));
			report.setJanoreg((int) UtilBean.extraiDigitos(jDataRegistro, 8, 1, 4));
			report.setJmesreg((int) UtilBean.extraiDigitos(jDataRegistro, 8, 5, 2));
			report.setJdiareg((int) UtilBean.extraiDigitos(jDataRegistro, 8, 7, 2));
			report.setJdelegacia(jDelegacia);
			report.setJdescaltura(jDescAltura);
			report.setJdesccivil(jDescCivil);
			report.setJdesccompleicao(jDescCompleicao);
			report.setJdesccor(jDescCor);
			report.setJdesccutis(jDescCutis);
			report.setJdescinstrucao(jDescInstrucao);
			report.setJdescmunicipio(jDescMunicipio);
			report.setJdescolho(jDescOlho);
			report.setJdescreg(jDescreg);
			report.setJdesctipocabelo(jDescTipocabelo);
			report.setJdocapresentado(jDocApresentado);
			report.setJestadocivil(jEstadoCivil);
			report.setJhorario(jHorario);
			report.setJidentidade(jIdentidade);
			report.setJinstrucao(jInstrucao);
			report.setJmae(jMae);
			report.setJmatricula(jMatricula);
			report.setJmotivo(jMotivo);
			report.setJmunendereco(jMunEndereco);
			report.setJmunicipio(jMunicipio);
			report.setJnaturalidade(jNaturalidade);
			report.setJnoautos(jNoAutos);
			report.setJnomeanterior(jNomeAnterior);
			report.setJnomecompleto(jNomeCompleto);
			report.setJnomedigitador(jNomeDigitador);
			report.setJnomevitima(jNomeVitima);
			report.setJnumdocapresentado(jNumDocApresentado);
			report.setJnumero(jNumero);
			report.setJobservacoes(jObservacoes);
			report.setJocorrencia(jOcorrencia);
			report.setJorgaoexpuf(jOrgaoExpUf);
			report.setJpai(jPai);
			report.setJprofissao(jProfissao);
			report.setJregGeral(jReg_geral);
			report.setJsexo(jSexo);
			report.setJsinais(jSinais);
			report.setJstatus(jStatus);
			report.setJtipocabelo(jTipoCabelo);
			report.setJufendereco(jUfEndereco);
			report.setJufnascimento(jUfNascimento);
			report.setJufreggeral(jUfRegGeral);
			report.gravaRelatorio(1);
			report.gravaRelatorio(2);
			report.gravaRelatorio(3);
			// if (fimPagina)
			// report.gravaRelatorio(1);
			// UtilBean.mensagemTexto("-" "PRODAMAR-");
			// RELATORIO
			while (report.getPageLine() < report.getPageSize())
				report.saltaLinhas(1);
			report.imprimir();
		}
		UtilBean.salvaAcao("br.com.vti.sisp.mb.programa.Scrp1600"); // STACK
		sessao.setAtributo("SCRP1610", this);
		result.include("scrp1610A", scrp1610A);
		scrp1610A.enviarTela(primeiraVez, result, getClass().getSimpleName().toUpperCase());
	}

	private void restaurarEstados(Scrp1610A pscrp1610A) {
		this.scrp1610Anterior = (Scrp1610) sessao.getAtributo("SCRP1610");
		if (pscrp1610A != null) {
			scrp1610A = pscrp1610A;
		} else {
			scrp1610A = this.scrp1610Anterior.scrp1610A;
		}
		scrp1610A.setSessao(sessao);
		this.faseproc = this.scrp1610Anterior.faseproc;
	}
}
